<?php
/*
* Copyright (c) 2012 Dario Alvarez Miranda, Steve Borrelli
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify, 
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
* 
* 
* The above copyright notice and this permission notice shall be included in all copies or 
* substantial portions of the Software.
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

function is_IE(){
	if (isset($_SERVER['HTTP_USER_AGENT']) && 
    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
        return true;
    else
        return false;
}

function is_mobile(){
	$useragent=$_SERVER['HTTP_USER_AGENT'];
	//print $useragent;
	if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|
		iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|
		p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|
		xda|xiino/i',$useragent) ||
		preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|
		al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|
		bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|
		co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|
		em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|
		go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|
		hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|
		jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|
		libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|
		mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|
		n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|
		p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|
		qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|
		sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|
		sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|
		tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|
		veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|
		webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
		return true;
	return false;
	}

function displayStacks($db, $page_size, $floor_id, $element_id){
	$i = 0;

			//$res = $db -> query("SELECT count(*) filas FROM Stacks where floor_id = $floor_id") -> fetchArray();
			//using sqlite2 here
			$query = sqlite_query($db, "SELECT count(*) filas FROM Stacks where floor_id = $floor_id"); 
			$res = sqlite_fetch_array($query);
			$nstacks = $res['filas'];
			//print all rows in several accordioned tables
			while ($i * $page_size < $nstacks) {
				//every $page_size records, there's a new section
				$first_row_index = $i * $page_size;
				$empty_offset = 0;
				do {
					$offset = $first_row_index + $empty_offset;
					$query = sqlite_query($db, "SELECT begins_with 
						  				FROM Stacks 
						  				WHERE floor_id = $floor_id					  				
						  				LIMIT 1 OFFSET $offset"); 
					$res = sqlite_fetch_array($query);					
					$begins = $res[0];
					$empty_offset++; //just in case the stack number is "empty"					
				} while (strcasecmp($begins, "empty")==0 and $empty_offset < $page_size);
				if (($i + 1) * $page_size <= $nstacks) {
					$last_row_index = ($i + 1) * $page_size - 1;
				} else {
					$last_row_index = $nstacks - 1;
				}
				$empty_offset = 0;
				do {
					$offset = $last_row_index - $empty_offset;
					$query = sqlite_query($db, "SELECT ends_with 
										FROM Stacks 
										WHERE floor_id = $floor_id 
										LIMIT 1 OFFSET $offset"); 
					$res = sqlite_fetch_array($query);					
					$ends = $res[0];
					$empty_offset++;
				} while (strcasecmp($ends, "empty")==0 and $offset > $first_row_index);

				/*$row_title = "<span style=\"display:inline-block; width: 10em\">$begins</span>
							to <span style=\"display: inline-block; position: relative; left: 2em\"> $ends</span>";*/
				$sub_header_id = $element_id . "_sh";
				print " <span >						
							<a href='#'>							
							<table id='$sub_header_id' class = 'sub_header'>
								<tr>
									<td width='120px' class='td_sub_head'>$begins</td>
									<td width='1em' class='td_sub_head'>to</td>
									<td class='td_sub_head'>$ends</td>
								</tr>
							</table>
							</a>
						</span>
						<div>
							<table cellspacing='0' cellpadding='2'>
							<tbody id='$element_id'>
								<tr>
				                  <td width='68'><b>Stack #</b></td>
				                  <td width='152'><b>Begins with:</b></td>
				                  <td width='20'>&nbsp;</td>
				                  <td width='149'><b>Ends with:</b> </td>
						        </tr>	";
				//}
				//actual rows
				
				$query = sqlite_query($db, "SELECT * 
											FROM Stacks s
											WHERE floor_id = $floor_id 
											ORDER BY s.number
											LIMIT $page_size
											OFFSET $first_row_index"); 
				
				if($last_error_code = sqlite_last_error($db)) {
				//Do not run a foreach as its not multi-dimensional array
					$Error = sqlite_error_string($last_error_code);
					throw new Exception($Error); //Driver Specific Error
				}
				while ($row = sqlite_fetch_array($query)) {	
					print "<tr><td><div align=\"center\">";
					$url = $row['map_url'];
					if (strlen($url) > 0) {
						$map_coords = $row['map_coords'];
						$params = explode("#", $map_coords);
						if(count($params) == 4){
							$url = "map.php?floor=".$url."&posx=".$params[0]."&posy=".$params[1]."&width=".$params[2]."&height=".$params[3];
						} else {
							$url = $row['number_url'];
						}
					} else {
						$url = $row['number_url'];						
					}
					if (strlen($url) > 0) {
							print "<a href='$url' style='text-decoration: underline'>";
					}
					print $row['number'];
					if (strlen($url) > 0) {
						print "</a>";
					}
					print "</div></td>";
					print "<td>" . $row['begins_with'] . "</td>";
					print "<td width=\"20\">to</td>";
					print "<td>" . $row['ends_with'] . "</td></tr>";
				}
				//ending a section
				print "</tbody></table>";
				print "</div>";
				print "<div class='stacks_separator'>&nbsp;</div>";
				$i++;
			}
}

?>